# 使用官方 Maven 镜像作为构建阶段
FROM maven:3.6.0-jdk-8-alpine AS builder

# 配置构建阶段
WORKDIR /app
COPY pom.xml .

# 使用优化的 Maven 设置文件（包含国内镜像源）
COPY docker.maven.settings.xml /usr/share/maven/ref/

# 分阶段下载依赖，利用 Docker 缓存层
RUN mvn dependency:go-offline dependency:resolve-plugins -U -s /usr/share/maven/ref/docker.maven.settings.xml

COPY src ./src
# 构建应用（跳过测试）
RUN mvn package -DskipTests -s /usr/share/maven/ref/docker.maven.settings.xml

# 使用轻量级 JRE 作为运行时镜像
FROM openjdk:8-jre-alpine

# 配置运行时环境
WORKDIR /app

# 从构建阶段复制生成的 jar 文件
COPY --from=builder /app/target/*.jar ./app.jar

# 创建必要的目录结构
RUN mkdir -p data/{upload,log}

# 设置时区和环境变量
ENV ACTIVE_PROFILE=pro \
    JAVA_OPTS=""

# 配置健康检查
#HEALTHCHECK --interval=30s --timeout=3s CMD wget -q -O /dev/null http://localhost:19200/actuator/health || exit 1

# 使用非 root 用户运行
# RUN addgroup -S appgroup && adduser -S appuser -G appgroup && chown -R appuser:appgroup /app
# USER appuser

# 启动命令
ENTRYPOINT exec java -jar $JAVA_OPTS -Dspring.profiles.active=${ACTIVE_PROFILE} app.jar
